package com.example.demo.common;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.nio.charset.StandardCharsets;
import java.util.UUID;

/**
 * Created with IntelliJ IDEA.
 * Description
 * User: 杰
 * Date: 2023 -08 -14
 * Time: 20:57
 */
public class PasswordUtils {
    // 使用加盐方法进行加密
    public static String encrypt(String password) {
        // 获取到盐值
        String salt = UUID.randomUUID().toString().replace("-","");
        // 盐值 + 密码 配合 md5进行加密
        String finalPassword = DigestUtils.md5DigestAsHex((salt+password).getBytes(StandardCharsets.UTF_8));
        // 将生成的密码返回
        return salt + "$" + finalPassword;
    }

    // 验证密码
    public static boolean decrypt(String password, String dbPassword) {
        if (!StringUtils.hasLength(password) || !StringUtils.hasLength(dbPassword) ||
            dbPassword.length() != 65) {
            return false;
        }
        // 获取到盐值
        String[] dbPasswordArray = dbPassword.split("\\$");
        if (dbPasswordArray.length != 2) {
            return false;
        }
        String salt = dbPasswordArray[0];
        // 最终密码
        String dbFinalPassword = dbPasswordArray[1];
        // 加密待验证的密码
        String finalPassword = DigestUtils.md5DigestAsHex((salt+password).getBytes(StandardCharsets.UTF_8));
        // 对比
        if (finalPassword.equals(dbFinalPassword)) {
            return true;
        }
        return false;
    }
}
